//package cn.nfwx.tv.controller;
//
//import android.app.Activity;
//import android.os.Message;
//import android.support.v4.widget.SwipeRefreshLayout;
//import android.support.v7.widget.LinearLayoutManager;
//import android.support.v7.widget.OrientationHelper;
//import android.support.v7.widget.RecyclerView;
//import android.util.Log;
//import android.view.View;
//import android.view.ViewGroup;
//import android.view.animation.Animation;
//import android.view.animation.AnimationUtils;
//import android.widget.CompoundButton;
//import android.widget.ImageView;
//import android.widget.LinearLayout;
//import android.widget.RelativeLayout;
//import android.widget.TextView;
//import android.widget.Toast;
//
//import com.chad.library.adapter.base.BaseQuickAdapter;
//import com.google.gson.Gson;
//
//import org.json.JSONObject;
//
//import java.util.ArrayList;
//import java.util.Iterator;
//import java.util.List;
//import java.util.Map;
//import java.util.logging.Handler;
//
//import cn.nfwx.tv.R;
//import cn.nfwx.tv.adapter.HistoryAdapter;
//import cn.nfwx.tv.base.NFWXApplication;
//import cn.nfwx.tv.callback.FinishListener;
//import cn.nfwx.tv.callback.ResponseListener;
//import cn.nfwx.tv.callback.WatchRecordCallBack;
//import cn.nfwx.tv.divider.RecycleViewDivider;
//import cn.nfwx.tv.manager.WatchRecordManager;
//import cn.nfwx.tv.model.WatchRecordModel;
//import cn.nfwx.tv.util.NetworkUtil;
//import cn.nfwx.tv.util.RecyclerViewUtil;
//import cn.nfwx.tv.util.SharePrefUtil;
//import cn.nfwx.tv.vo.HistoryDelete;
//import cn.nfwx.tv.vo.ResultErrorVo;
//import cn.nfwx.tv.widget.CustomLoadMoreView;
//import cn.nfwx.tv.widget.WxLoadmoreView;
//
//
///**
// * Created by dell on 2017/11/24.
// */
//
//public class WatchRecordViewController implements View.OnClickListener, SwipeRefreshLayout.OnRefreshListener, HistoryAdapter.OnCheckedChangeDeleteListener {
//    private final static String TAG_LOG = WatchRecordViewController.class.getSimpleName();
//    private Activity activity;
//    private RecyclerView recyclerView;
//    private TextView history_edit_btn,history_delete,history_cancle;
//    private LinearLayout bottom_layout,history_data;
//    private HistoryAdapter adapter;
//    private List<WatchRecordModel> mData=new ArrayList<WatchRecordModel>();
//    private List<WatchRecordModel> mList=new ArrayList<WatchRecordModel>();
//    private SwipeRefreshLayout history_refreshLayout;
//    private SwipeRefreshLayout.OnRefreshListener onRefreshListener;
//    private View.OnClickListener onClickListener;
//    private HistoryAdapter.OnItemClickListener onItemClickListener;
//    private boolean isDelete =false;
//    private boolean isFull=false;
//    private int pageNo=1,pageSize=10;
//    private View notDataView;
//    private View errorView;
//    private ImageView empty_image,error_image;
//    private TextView empty_text,error_text;
//    private LinearLayout error_refresh_btn;
//    private static final int NETWORK_ERROR_MSG=1;
//
//
//    public WatchRecordViewController(Activity activity, View view) {
//        this.activity = activity;
//        initView(view);
//    }
//
//    public void initView(View view) {
//        history_data=findView(view,R.id.history_data);
//        history_refreshLayout=findView(view,R.id.history_refreshLayout);
//        recyclerView=findView(view, R.id.history_recyclerView);
//        history_edit_btn=findView(view,R.id.history_edit_btn);
//        bottom_layout=findView(view,R.id.bottom_layout);
//        history_cancle=findView(view,R.id.history_cancle);
//        history_delete=findView(view,R.id.history_delete);
//        errorView= activity.getLayoutInflater().inflate(R.layout.dialog_network_error, (ViewGroup) recyclerView.getParent(), false);
//        notDataView = activity.getLayoutInflater().inflate(R.layout.view_nodata, (ViewGroup) recyclerView.getParent(), false);
//        error_image=errorView.findViewById(R.id.error_image);
//        error_text=errorView.findViewById(R.id.error_text);
//        empty_image=notDataView.findViewById(R.id.empty_image);
//        empty_text=notDataView.findViewById(R.id.empty_text);
//        error_refresh_btn=errorView.findViewById(R.id.error_refresh_btn);
//        empty_image.setImageResource(R.mipmap.empty_record);
//        empty_text.setText("暂无观看记录");
//        LinearLayoutManager linearLayoutManager=new LinearLayoutManager(activity);
//        linearLayoutManager.setOrientation(OrientationHelper.VERTICAL);
//        recyclerView.setLayoutManager(linearLayoutManager);
//        RecyclerViewUtil.setLinearLayoutManagerWithoutDivder(activity, recyclerView);
//        recyclerView.addItemDecoration(new RecycleViewDivider(activity,LinearLayoutManager.HORIZONTAL,R.drawable.divider_hotcolumn));
//        adapter=new HistoryAdapter(R.layout.fragment_history_item,mData);
//        adapter.setDelete(false);
//        adapter.setOnCheckedChangeDeleteListener(this);
//        adapter.setLoadMoreView(new CustomLoadMoreView());
//        adapter.setOnLoadMoreListener(new BaseQuickAdapter.RequestLoadMoreListener() {
//            @Override
//            public void onLoadMoreRequested() {
//                Log.d("LoadMore","加载更多");
//                    setMoreData();
//            }
//        });
//        recyclerView.setAdapter(adapter);
//        history_refreshLayout.setOnRefreshListener(this);
//        history_cancle.setOnClickListener(this);
//        history_delete.setOnClickListener(this);
//        history_edit_btn.setOnClickListener(this);
//        error_refresh_btn.setOnClickListener(this);
//    }
//
//    public void setNewData(){
//        pageNo=1;
//        mData.clear();
//        adapter.setEnableLoadMore(false);//这里的作用是防止下拉刷新的时候还可以上拉加载
//        WatchRecordManager.requestWatchRecordList(activity,  pageNo, pageSize,SharePrefUtil.getUser(activity).getAccess_token(),new WatchRecordCallBack() {
//            @Override
//            public void onSuccess(final List<WatchRecordModel> list) {
//                activity.runOnUiThread(new Runnable() {
//
//                    @Override
//                    public void run() {
//                        Log.d("LoadMore","=="+list.size());
//
//                        if(list.size()==0){
//                             adapter.setEmptyView(notDataView);
//                        }else{
//                            mData.addAll(list);
//                            adapter.notifyDataSetChanged();
//                            pageNo++;
//                        }
//                        adapter.setEnableLoadMore(true);
//                        history_refreshLayout.setRefreshing(false);
//
//                        if(list.size()<pageSize){
//                            adapter.loadMoreEnd(true);
//                        }
//                    }
//                });
//
//
//            }
//
//            @Override
//            public void onError(String requestTag, Throwable t) {
//                activity.runOnUiThread(new Runnable() {
//                    @Override
//                    public void run() {
//                        if(!NetworkUtil.hasNetwork(activity)){
//                            error_image.setImageResource(R.mipmap.player_nointernet);
//                            error_text.setText("世界上最遥远的距离就是断网");
//                        }else{
//                            error_image.setImageResource(R.mipmap.player_fail);
//                            error_text.setText("加载失败了，点我重试");
//                        }
//                        adapter.setEmptyView(errorView);
//                        history_refreshLayout.setRefreshing(false);
//                    }
//                });
//
//            }
//
//            @Override
//            public void onFail(String requestTag, String response) {
//                Log.d(TAG_LOG,"历史记录："+response);
//                super.onFail(requestTag, response);
//                Gson gson = new Gson();
//                ResultErrorVo resultErrorVo = gson.fromJson(response, ResultErrorVo.class);
//                if("AUTH".equals(resultErrorVo.getCode())){
//                    NFWXApplication.getInstance().refreshTokenData(new FinishListener() {
//                        @Override
//                        public void onFinish() {
//                         setNewData();
//                        }
//                    });
//                }
//            }
//
//            @Override
//            public void onComplete() {
//                super.onComplete();
//                activity.runOnUiThread(new Runnable() {
//                    @Override
//                    public void run() {
//                        history_refreshLayout.setRefreshing(false);
//                    }
//                });
//            }
//        });
//    }
//
//    public void setMoreData(){
//        WatchRecordManager.requestWatchRecordList(activity, pageNo, pageSize,SharePrefUtil.getUser(activity).getAccess_token(), new WatchRecordCallBack() {
//            @Override
//            public void onSuccess(final List<WatchRecordModel> list) {
//                activity.runOnUiThread(new Runnable() {
//
//                    @Override
//                    public void run() {
//                        adapter.addData(list);
//                        if(list.size()<pageSize){
//                            adapter.loadMoreComplete();
//                          //  adapter.setEnableLoadMore(true);
//                            adapter.loadMoreEnd();
//                        }else{
//                            adapter.loadMoreComplete();
//                          //  adapter.setEnableLoadMore(true);
//                        }
//                        pageNo++;
//                    }
//                });
//
//
//            }
//
//            @Override
//            public void onFail(String requestTag, String response) {
//                super.onFail(requestTag, response);
//            }
//
//            @Override
//            public void onComplete() {
//                super.onComplete();
//                activity.runOnUiThread(new Runnable() {
//                    @Override
//                    public void run() {
//
//                    }
//                });
//            }
//        });
//    }
//
//
//    public void refreshData(boolean isRefresh){
//        history_refreshLayout.setRefreshing(isRefresh);
//    }
//
//
//    public void setOnRefreshListener(SwipeRefreshLayout.OnRefreshListener onRefreshListener){
//        this.onRefreshListener=onRefreshListener;
//    }
//
//    public void setDeleteClickListener(View.OnClickListener onClickListener){
//        this.onClickListener=onClickListener;
//
//    }
//
//    public HistoryAdapter getAdapter(){
//        if(adapter==null){
//            adapter=new HistoryAdapter(R.layout.fragment_history_item,mData);
//        }
//        return adapter;
//    }
//
//    /**
//     * 查找控件
//     * @param rid
//     * @param <T>
//     * @return
//     */
//    public <T extends View> T findView(View view, int rid) {
//        return (T) view.findViewById(rid);
//    }
//
//    @Override
//    public void onClick(View view) {
//        switch (view.getId()){
//            case R.id.history_edit_btn:
//                isDelete=!isDelete;
//                if(isDelete){
//                    bottom_layout.setVisibility(View.VISIBLE);
//                    history_edit_btn.setText("取消");
//                    adapter.setDelete(true);
//                }else{
//                    bottom_layout.setVisibility(View.GONE);
//                    history_edit_btn.setText("编辑");
//                    adapter.setDelete(false);
//                    adapter.getDeleteData().clear();
//                }
//                break;
//            case R.id.history_delete:
//                Log.d(TAG_LOG,"点击");
//                Map<Integer,String> map=adapter.getDeleteData();
//                List ids=new ArrayList();
//                HistoryDelete historyDelete=new HistoryDelete();
//
//                for(Integer id:map.keySet()){
//
//                   ids.add(map.get(id));
//                }
//                historyDelete.setVid(ids);
//                Gson gson=new Gson();
//                Log.d("List", gson.toJson(ids));
//
//                WatchRecordManager.deleteWatchRecord(activity, gson.toJson(historyDelete),SharePrefUtil.getUser(activity).getAccess_token(), new ResponseListener<String>() {
//                    @Override
//                    public void onResponse(final String requestTag, final String response) {
//                        activity.runOnUiThread(new Runnable() {
//                            @Override
//                            public void run() {
//                             if("true".equals(response)){
//                                 setDeleteDataChange(adapter.getDeleteData());
//                                 bottom_layout.setVisibility(View.GONE);
//                                 history_edit_btn.setText("编辑");
//                                 adapter.setDelete(false);
//                                 adapter.getDeleteData().clear();
//                                 adapter.notifyDataSetChanged();
//                             }
//
//                            }
//                        });
//                    }
//
//                    @Override
//                    public void onError(String requestTag, Throwable t) {
//                        Log.d(TAG_LOG,t.getMessage());
//                    }
//
//                    @Override
//                    public void onFinish() {
//
//                    }
//                });
//                Log.d(TAG_LOG,ids.toString());
//                break;
//            case R.id.history_cancle:
//                if(isFull){
//                    adapter.getDeleteData().clear();
//                    adapter.notifyDataSetChanged();
//                    isFull=false;
//                    history_cancle.setText("全选");
//                }else{
//                    for(int i=0;i<adapter.getData().size();i++){
//                        if(!adapter.getDeleteData().containsKey(i)){
//                            adapter.getDeleteData().put(i,adapter.getData().get(i).getVid());
//                        }
//                    }
//                    history_cancle.setText("取消全选");
//                    adapter.notifyDataSetChanged();
//                    isFull=true;
//                }
//                break;
//            case R.id.error_refresh_btn:
//                error_image.setImageResource(R.drawable.footer_loading_progress);
//                Animation rotate = AnimationUtils.loadAnimation(activity, R.anim.rotate_anim);
//                error_image.startAnimation(rotate);
//                mHandler.sendEmptyMessageDelayed(NETWORK_ERROR_MSG,1000);
//               // setNewData();
//                break;
//
//        }
//    }
//
//    private android.os.Handler mHandler = new android.os.Handler() {
//        @Override
//        public void dispatchMessage(Message msg) {
//            super.dispatchMessage(msg);
//            switch (msg.what) {
//                case NETWORK_ERROR_MSG:
//                    setNewData();
//                    break;
//            }
//        }
//    };
//
//    /***
//     * 从数据源删除数据
//     * @param deleteMap
//     */
//    public void setDeleteDataChange(Map<Integer, String> deleteMap){
//        for(Integer id:deleteMap.keySet()){
//            Iterator<WatchRecordModel> it = mData.iterator();
//            while(it.hasNext()){
//                WatchRecordModel x = it.next();
//                if(x.getVid().equals(deleteMap.get(id))){
//                    it.remove();
//                }
//            }
//
//        }
//        if(mData.size()==0){
//          adapter.setEmptyView(notDataView);
//        }
//    }
//
//    public void setPlayClickLisenter(HistoryAdapter.OnItemClickListener onItemClickListener){
//        this.onItemClickListener=onItemClickListener;
//        adapter.setOnItemClickListener(this.onItemClickListener);
//    }
//
//    @Override
//    public void onRefresh() {
//        setNewData();
//    }
//
//    @Override
//    public void onCheckedChanged(CompoundButton compoundButton, boolean b, int position) {
//        if(b){
//            adapter.getDeleteData().put(position,adapter.getData().get(position).getVid());
//        }else{
//            adapter.getDeleteData().remove(adapter.getDeleteData().get(position));
//        }
//         if(adapter.getDeleteData().keySet().size()==adapter.getData().size()){
//             history_cancle.setText("取消全选");//全部勾上
//             isFull=true;
//         }else{
//             history_cancle.setText("全选");//还未全部勾上
//             isFull=false;
//         }
//    }
//}
